#!/bin/bash

# 项目在阿里云效流水线构建物上传时需要将项目编译打包的 target/ 下的所有文件和这个脚本放在一起打包上传到服务器上，
# 然后在主机部署阶段解压刚才上传的压缩包，进入到解压后的目录，执行这个脚本来运行所有服务 jar 包。
# target/

# 使用说明，用来提示输入参数
usage() {
  echo "Usage: sh 执行脚本.sh [port|base|modules|stop|rm]"
  exit 1
}

# debian 系统无法使用 firewall-cmd 命令
# 开启所需端口，参考 https://blog.csdn.net/Leo_GetBetter/article/details/132017596
port() {
  #  debian 系统使用 ufw 命令开启端口，默认已经安装并开启了 ufw 防火墙服务
  # sudo apt install ufw  安装 ufw
  cat /etc/ufw/before.rules
  cat /etc/default/ufw


  # sudo ufw status verbose 查看所有端口的状态
  # sudo ufw allow OpenSSH  允许 OpenSSH 端口
  sudo ufw allow 22/tcp    # 允许 SSH 连接
  sudo ufw allow 80/tcp    # 允许 HTTP 服务
  sudo ufw allow 443/tcp   # 允许 HTTPS 服务


  sudo ufw allow 8080/tcp  # 允许 8080 端口
  sudo ufw allow 8848/tcp  # 允许 8848 端口
  sudo ufw allow 9848/tcp  # 允许 9848 端口
  sudo ufw allow 9849/tcp  # 允许 9849 端口
  sudo ufw allow 6379/tcp  # 允许 6379 端口
  sudo ufw allow 3306/tcp  # 允许 3306 端口
  sudo ufw allow 9100/tcp  # 允许 9100 端口
  sudo ufw allow 9200/tcp  # 允许 9200 端口
  sudo ufw allow 9201/tcp  # 允许 9201 端口
  sudo ufw allow 9202/tcp  # 允许 9202 端口
  sudo ufw allow 9203/tcp  # 允许 9203 端口
  sudo ufw allow 9300/tcp  # 允许 9300 端口
  sudo ufw enable          # 启用防火墙
  sudo ufw status verbose  # 查看防火墙状态


  #  centos 系统使用 firewall-cmd 命令开启端口，默认已经安装并开启了 firewalld 防火墙服务
  # sudo yum install firewalld  安装 firewalld
  cat /etc/firewalld/firewalld.conf
  # sudo firewall-cmd --zone=public --list-ports  查看所有端口的状态
  # 系统常用端口
  sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
  sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
  # 常用中间件端口
  sudo firewall-cmd --zone=public --add-port=8848/tcp --permanent
  sudo firewall-cmd --zone=public --add-port=9848/tcp --permanent
  sudo firewall-cmd --zone=public --add-port=9849/tcp --permanent
  sudo firewall-cmd --zone=public --add-port=6379/tcp --permanent
  sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
  # 以下是微服务端口，需要根据实际情况开启
  sudo firewall-cmd --zone=public --add-port=9100/tcp --permanent
  sudo firewall-cmd --zone=public --add-port=9200/tcp --permanent
  sudo firewall-cmd --zone=public --add-port=9201/tcp --permanent
  sudo firewall-cmd --zone=public --add-port=9202/tcp --permanent
  sudo firewall-cmd --zone=public --add-port=9203/tcp --permanent
  sudo firewall-cmd --zone=public --add-port=9300/tcp --permanent
  sudo firewall-cmd --reload  # 重启防火墙
  service firewalld restart  # 重启防火墙服务
}

# 启动基础环境（必须）
base() {
	docker-compose up -d ruoyi-mysql ruoyi-redis ruoyi-nacos
}

# 启动程序模块（必须）
modules() {
	docker-compose up -d ruoyi-nginx ruoyi-gateway ruoyi-auth ruoyi-modules-system
}

# 关闭所有环境/模块
stop() {
	docker-compose stop
}

# 删除所有环境/模块
rm() {
	docker-compose rm
}

# 根据输入参数，选择执行对应方法，不输入则执行使用说明
case "$1" in
"port")
	port
;;
"base")
	base
;;
"modules")
	modules
;;
"stop")
	stop
;;
"rm")
	rm
;;
*)
	usage
;;
esac

# 项目在阿里云效流水线构建物上传时需要将项目编译打包的 target/ 下的所有文件和这个脚本放在一起打包上传到服务器上，
# 然后在主机部署阶段解压刚才上传的压缩包，进入到解压后的目录，执行这个脚本来运行所有服务 jar 包。